home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / e / e_modules02.lha / e_modules02 / crc / modules / tools / CRC.e next >
Encoding:
Text File  |  1996-07-08  |  2.9 KB  |  91 lines

  1. OPT MODULE
  2. OPT PREPROCESS
  3.  
  4. EXPORT PROC crcchecksum(mem:PTR TO CHAR,len,crc=0)
  5.  
  6.  /*
  7.   * updcrc macro derived from article Copyright (C) 1986 Stephen Satchell.
  8.   *  NOTE: First argument must be in range 0 to 255.
  9.   *        Second argument is referenced twice.
  10.   *
  11.   * Programmers may incorporate any or all code into their programs,
  12.   * giving proper credit within the source. Publication of the
  13.   * source routines is permitted so LONG as proper credit is given
  14.   * to Stephen Satchell, Satchell Evaluations and Chuck Forsberg,
  15.   * Omen Technology.
  16.   */
  17.  
  18.    MOVEM.L D1-D7/A0-A6,-(A7)
  19.    MOVE.L  mem,A0
  20.    MOVE.L  len,D3
  21.    MOVE.L  crc,D2
  22.    BRA     lab2
  23. lab1:
  24.    LEA     crctab(PC),A6
  25.    MOVEQ   #0,D7
  26.    MOVE.W  D2,D7
  27.    ASR.L   #$8,D7
  28.    AND.L   #$FF,D7
  29.    MOVEQ   #0,D6
  30.    MOVEQ   #0,D5
  31.    MOVE.L  D7,D5
  32.    LSL.L   #1,D5
  33.    MOVE.W  0(A6,D5.L),D6
  34.    MOVEQ   #0,D7
  35.    MOVE.W  D2,D7
  36.    ASL.L   #$8,D7
  37.    EOR.L   D7,D6
  38.    MOVEQ   #0,D7
  39.    MOVE.B  (A0)+,D7
  40.    EOR.L   D7,D6
  41.    MOVE.W  D6,D2
  42. lab2:
  43.    MOVE.L  D3,D7
  44.    SUBQ.L  #1,D3
  45.    CMP.L   #0,D7
  46.    BGT.B   lab1
  47.  
  48.    MOVEQ   #0,D0
  49.    MOVE.L  D2,D0
  50.    MOVEM.L (A7)+,D1-D7/A0-A6
  51. ENDPROC D0
  52.  
  53.  
  54.  /* crctab calculated by Mark G. Mendel,
  55.     Network Systems Corporation
  56.   */
  57. crctab:
  58.   INT  $0000,$1021,$2042,$3063,$4084,$50A5,$60C6,$70E7
  59.   INT  $8108,$9129,$A14A,$B16B,$C18C,$D1AD,$E1CE,$F1EF
  60.   INT  $1231,$0210,$3273,$2252,$52B5,$4294,$72F7,$62D6
  61.   INT  $9339,$8318,$B37B,$A35A,$D3BD,$C39C,$F3FF,$E3DE
  62.   INT  $2462,$3443,$0420,$1401,$64E6,$74C7,$44A4,$5485
  63.   INT  $A56A,$B54B,$8528,$9509,$E5EE,$F5CF,$C5AC,$D58D
  64.   INT  $3653,$2672,$1611,$0630,$76D7,$66F6,$5695,$46B4
  65.   INT  $B75B,$A77A,$9719,$8738,$F7DF,$E7FE,$D79D,$C7BC
  66.   INT  $48C4,$58E5,$6886,$78A7,$0840,$1861,$2802,$3823
  67.   INT  $C9CC,$D9ED,$E98E,$F9AF,$8948,$9969,$A90A,$B92B
  68.   INT  $5AF5,$4AD4,$7AB7,$6A96,$1A71,$0A50,$3A33,$2A12
  69.   INT  $DBFD,$CBDC,$FBBF,$EB9E,$9B79,$8B58,$BB3B,$AB1A
  70.   INT  $6CA6,$7C87,$4CE4,$5CC5,$2C22,$3C03,$0C60,$1C41
  71.   INT  $EDAE,$FD8F,$CDEC,$DDCD,$AD2A,$BD0B,$8D68,$9D49
  72.   INT  $7E97,$6EB6,$5ED5,$4EF4,$3E13,$2E32,$1E51,$0E70
  73.   INT  $FF9F,$EFBE,$DFDD,$CFFC,$BF1B,$AF3A,$9F59,$8F78
  74.   INT  $9188,$81A9,$B1CA,$A1EB,$D10C,$C12D,$F14E,$E16F
  75.   INT  $1080,$00A1,$30C2,$20E3,$5004,$4025,$7046,$6067
  76.   INT  $83B9,$9398,$A3FB,$B3DA,$C33D,$D31C,$E37F,$F35E
  77.   INT  $02B1,$1290,$22F3,$32D2,$4235,$5214,$6277,$7256
  78.   INT  $B5EA,$A5CB,$95A8,$8589,$F56E,$E54F,$D52C,$C50D
  79.   INT  $34E2,$24C3,$14A0,$0481,$7466,$6447,$5424,$4405
  80.   INT  $A7DB,$B7FA,$8799,$97B8,$E75F,$F77E,$C71D,$D73C
  81.   INT  $26D3,$36F2,$0691,$16B0,$6657,$7676,$4615,$5634
  82.   INT  $D94C,$C96D,$F90E,$E92F,$99C8,$89E9,$B98A,$A9AB
  83.   INT  $5844,$4865,$7806,$6827,$18C0,$08E1,$3882,$28A3
  84.   INT  $CB7D,$DB5C,$EB3F,$FB1E,$8BF9,$9BD8,$ABBB,$BB9A
  85.   INT  $4A75,$5A54,$6A37,$7A16,$0AF1,$1AD0,$2AB3,$3A92
  86.   INT  $FD2E,$ED0F,$DD6C,$CD4D,$BDAA,$AD8B,$9DE8,$8DC9
  87.   INT  $7C26,$6C07,$5C64,$4C45,$3CA2,$2C83,$1CE0,$0CC1
  88.   INT  $EF1F,$FF3E,$CF5D,$DF7C,$AF9B,$BFBA,$8FD9,$9FF8
  89.   INT  $6E17,$7E36,$4E55,$5E74,$2E93,$3EB2,$0ED1,$1EF0
  90.   INT  $0
  91.